/*
1 1 1 0 0
1 1 0 1 0
1 1 0 0 1
1 0 1 1 0
1 0 1 0 1
1 0 0 1 1
0 1 1 1 0
0 1 1 0 1
0 1 0 1 1
0 0 1 1 1
*/


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int kernel(int n);//按真值输出组合数。核心函数
int bin_to_dec(int arr[]);
int dec_to_bin(int dec);
int addup(int num);
int kernel(int p,int q);

int *arr,int *subarr;
unsigned n,r,count;

int main(void)
{

	printf("请输入n：");
	scanf("%u",&n);
	printf("请输入r：");
	scanf("%u",&r);
	arr = (int *)malloc(sizeof(arr)*n);
	subarr = (int *)malloc(sizeof(arr)*n);

	puts("请输入n个数:");
	for(int i = 0; i<n; i++){
		scanf("%d",&arr[i]);
		subarr[i] = 0;//辅助数组全部初始化为0
	}

	count = calc(n,r);
	for(int i = 0; i<r; i++){
		subarr[i] = 1;
	}
	int up = bin_to_dec(subarr);
	for(int i = r; i>0; i--){
		subarr[i] = 1;
	}
	int low = bin_to_dec(subarr)
	kernel(low,up);
}

int bin_to_dec(int arr[])
{
	int dec = 0;
	for(int i = 0; i<n; i++)
		if(subray[i])
			dec += 0x00000001<<（n-r-1);
	return dec;
}

int dec_to_bin(int dec)
{
	int i = n;
	while(dec){
		subarr[i] = dec%2;
		dec /= 2;
		i--; 
	}
	return 0;
}
int kernel(int p,int q)
{
	for(int i = p; i<=q; i++){
		if(addup(i) == r){
			for(int j = 0; j<n; j++){
				if(subarr[j])
					printf("%4d",arr[j]);
			}
		}
	}
	return 0;
}

int addup(int num)
{
	int plus = 0;
	dec_to_bin(num);
	for(int i = 0; i<n; i++){
		plus += subarr[i];
	}

	return plus;
}